import { createPinia } from 'pinia'
import Logger from '../utils/Logger.js'

// 创建 Pinia 实例
const pinia = createPinia()

// 添加 Pinia 插件 - 日志记录
pinia.use(({ store }) => {
  // 记录 store 的初始化
  Logger.modules.store.info('Store 初始化', {
    storeId: store.$id
  })
  
  // 监听 state 变化
  store.$subscribe((mutation, state) => {
    // 只在开发环境或特定日志级别下记录所有 state 变化
    if (import.meta.env.DEV) {
      Logger.modules.store.debug('State 变化', {
        storeId: store.$id,
        type: mutation.type,
        events: mutation.events,
        // 只记录变化的字段，避免日志过大
        changedKeys: Object.keys(mutation.events)
      })
    }
  })
  
  // 监听 action 调用
  store.$onAction(({ name, args, after, onError }) => {
    // 记录 action 开始
    Logger.modules.store.info('Action 调用', {
      storeId: store.$id,
      actionName: name,
      args: args
    })
    
    // 记录 action 完成
    after((result) => {
      Logger.modules.store.info('Action 完成', {
        storeId: store.$id,
        actionName: name,
        result: result
      })
    })
    
    // 记录 action 错误
    onError((error) => {
      Logger.modules.store.error('Action 失败', {
        storeId: store.$id,
        actionName: name,
        error: error.message,
        stack: error.stack
      })
    })
  })
})

// 记录 Pinia 初始化
Logger.info('Pinia 状态管理初始化完成')

// 导出 Pinia 实例
export default pinia